package com.crcode.crm.service.data;

import com.crcode.crm.bean.data.ProjectBean;
import com.crcode.crm.bean.user.UserBean;
import com.crcode.crm.service.CommonService;
import com.crcode.crm.utils.PageVo;
import com.crcode.crm.utils.ResultUtil;

import java.util.List;
import java.util.Map;


/**
 * 项目业务逻辑接口
 * @author cl
 * @date 2019年3月25日
 */
public interface ProjectService extends CommonService<ProjectBean, Integer> {
	
	/**
	 * 根据UUID查询
	 * @param uuid
	 * @return
	 */
	public ProjectBean findByUuid(String uuid);
	
	/**
	 * 根据项目名称和企业UUID查询
	 * @param proName
	 * @param entUuid
	 * @return
	 */
	public ProjectBean findByProNameAndEntUuid(String proName,String entUuid);
	
	/**
	 * 根据主键批量物理删除
	 * @author cl  
	 * @date 2019年3月25日
	 * @param ids
	 * @return
	 */
	public ResultUtil physicalDeleteByIds(String ids,UserBean user);

	/**
	 * 根据查询条件查询
	 */
	public Map<String, Object> findAll(Map<String, Object> params, PageVo vo);
	
	/**
	 * 根据UUIDS设置查看编辑权限
	 * @author lxw
	 * @date 2019年4月22日
	 * @param uuids 资源UUIDS
	 * @param suuid 查看权限用户UUIDS
	 * @param sname查看权限用户名称集
	 * @param euuid编辑 权限用户UUIDS
	 * @param ename编辑权限用户名称集
	 * @param user 当前操作用户
	 * @return
	 */
    public boolean empowerByIds(String uuids,String suuid,String sname,String euuid,String ename,UserBean user);


	/**
	 * 根据用户/创建时间统计项目数量,按天统计
	 * @return List<Map<String, Object>>
	 */
	List<Map<String, Object>> aggsProByUserCreateTime(String uuid);
	
	/**
	 * 设置项目的启动或者终止
	 * @author lxw
	 * @date 2019年4月19日
	 * @param isEnd 0、正常，1、终止
	 * @param uuids
	 * @return
	 */
	public ResultUtil setProjectStartOrEnd(UserBean user,Integer isEnd, String uuids);
	/**
	 * 重置负责人
	 * @author lxw
	 * @date 2019年4月26日
	 * @param user 操作者
	 * @param uuids 资源UUIDS
	 * @param userUuid 用户序号
	 * @param userName 用户名称
	 * @return
	 */
	public ResultUtil resetLiableUserByUuids(UserBean user,String uuids,String userUuid,String userName);
}
